// 表单配置
export type FormOption = {
  // 表单标题
  title: string;

  // 表单宽度
  width: number;

  // 表单label宽度
  labelWidth: number;

  // 表单内容配置
  fieldList: Array<FormFieldSetting>;

  // 提交表单操作
  submitFunc: (model: any) => any;
};

// 表单字段配置
export type FormFieldSetting = {
  // 字段名称
  fieldName: string;

  // 表单label名称
  verboseName: string;

  // 字段组件类型
  fieldType: FormFieldType;

  // 是否是多选
  isMultiSelect?: boolean;

  // 选项
  selectSource?: Array<ForeignKeyModel>;

  // 文件上传action
  uploadAction?: string;

  // 文件后缀名限制
  uploadFormats?: Array<string>;

  // 连级选择器 选择的对象是数组还是对象
  bindArray?: boolean;

  // 连级选择器 是否禁用本身（用于循环引用tree中的 parent和children）
  needHideSelf?: boolean;

  // 是否只读
  readonly?: boolean;
};

export enum FormFieldType {
  input,
  textarea,
  number,
  select,
  cascader,
  switch,
  date,
  upload,
  password,
  richText,
}
